package com.liuqing.www.java基础知识.网络通信;

import java.io.IOException;
import java.net.UnknownHostException;
import java.nio.BufferUnderflowException;
import java.nio.channels.ClosedChannelException;

import org.xsocket.MaxReadSizeExceededException;
import org.xsocket.connection.IDataHandler;
import org.xsocket.connection.INonBlockingConnection;
import org.xsocket.connection.IServer;
import org.xsocket.connection.Server;

/**
 *  随着xSocket你可以编写高性能，可扩展的客户端和服务器组件的自定义协议如SMTP服务器，代理服务器或客户端和服务器组件是一个基于。
IDataHandler ：服务端或者客户端端数据处理类；
IConnectHandler 服务端或者客户端连接成功是处理操作。  
IIdleTimeoutHandler 请求处理超时才操作。  
IConnectionTimeoutHandler连接超时的操作
IDisconnectHandler 连接断开时的操作
IBlockingConnection 阻塞模式的连接
INonBlockingConnection 非阻塞模式的连接
 * @author 韩世超
 *
 */
public class Xsocket详解  {
	public static void main(String[] args) {
		try {
			IServer s=new Server("localhost",8082,new DataHandler() );
			/***有两个方法启动服务，分别是run()和start()，
			 * start()会创建一个专用的线程来运行服务器，阻塞直到服务器内部已经启动。
			 * 这是首选的方法。***/
			s.run();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
class DataHandler implements IDataHandler {
	/**
	 * 接受数据实现IDataHandler的方法
	 */
		@Override
		public boolean onData(INonBlockingConnection arg0) throws IOException,
				BufferUnderflowException, ClosedChannelException,
				MaxReadSizeExceededException {
			arg0.readStringByDelimiter("/n");
			// TODO Auto-generated method stub
			return false;
		}

	}
